package com.cl.dao;
/**
 * 
 */
import java.util.List;
import java.util.Map;

import org.springframework.dao.DataAccessException;

import com.cl.util.Pager;

/**
 * 基础类dao接口
 * 创建者:chenlu
 * 创建时间:2016-6-30
 * 注意：在所有映射文件中需要按此处的规范命名，否则查询需要在自己的dao层去新增自定义方法
 */
public interface BaseDao<T> {
	 
	/**
	 * 根据ID查询一条数据
	 * @param id 参数ID
	 * @return 找到则返回，否则返回空
	 */
	T getOneDataByID(Object id);
	
	
	/**
	 * 新增数据
	 * @param t 新增的对象
	 * @return 返回新增的记录数据
	 */
	int addOneData(T t);
	
	/**
	 * 根据主键删除一条数据
	 * @param id 
	 * @return 删除的记录数
	 */
	int deleteOneDataById(Object id);
	
	/**
	 * 根据条件删除数据
	 * @param id 
	 * @return 删除的记录数
	 */
	int deleteDataByParams(Map map);
	
	/**
	 * 根据主键更新一条数据
	 * @param id
	 * @return 更新的记录数
	 */
	int updateDataById(Object id);
	
	/**
	 * 根据自定义的参数更新多条数据
	 * @param map
	 * @return  更新的记录数
	 */
	int updateDataByParams(Map map);
	
	/**
	 * 根据实体直接修改
	 * @param map
	 * @return  更新的记录数
	 */
	public int updateDataByObject(T t);
	
	/**
	 * 根据自定义的参数查询实体列表
	 * @param map
	 * @return
	 */
	public List<T> listDataByParams(Map map);
	
	  /**
     * 查询某一页数据mysql
     * @param sqlID sqlmap文件sql语句对应的id
     * @param object 查询条件对象
     * @param skipResults 从第几条数据开始取数据
     * @param maxResults 最多取多少条数据
     * @return 数据列表
     * @throws DataAccessException 数据库访问异常
     */
    @SuppressWarnings("unchecked")
    public Pager  pageList(String sqlID, Map object, Pager page);
    
}

